package com.lms.collection.list;

import java.util.*;
import java.util.stream.Collectors;

/**
 * @Author: 李孟帅
 * @CreateTime: 2020-05-22 07:18
 * @Description: ${Description}
 */
public class LinkedListDemo {
    public static void main(String[] args) {
        LinkedList<String> linkedList = new LinkedList<>(); //构造一个空列表。
        LinkedList<Object> objects = new LinkedList<>(new HashSet<>());//构造一个包含指定集合的元素的列表，按照它们由集合的迭代器返回的顺序。
        boolean s = linkedList.addAll(Arrays.asList("1", "2", "s"));//按照指定集合的迭代器返回的顺序将指定集合中的所有元素追加到此列表的末尾。
        linkedList.addFirst("e");
        linkedList.addLast("l");
        Iterator<String> stringIterator = linkedList.descendingIterator();//以相反的顺序返回此deque中的元素的迭代器。
//        stringIterator.forEachRemaining(System.out::println);
        String element = linkedList.element();//检索但不删除此列表的头（第一个元素）。
        String first = linkedList.getFirst();//返回此列表中的第一个元素。为null抛异常
        String last = linkedList.getLast();//返回此列表中的最后一个元素。
        String peek = linkedList.peek();//检索但不删除此列表的头（第一个元素）。
        String s1 = linkedList.peekFirst();//检索但不删除此列表的第一个元素，如果此列表为空，则返回 null
        String s2 = linkedList.peekLast();//检索但不删除此列表的最后一个元素，如果此列表为空，则返回 null 。
        boolean q = linkedList.offer("q");//将指定的元素添加为此列表的尾部（最后一个元素）。底层都是调用的add方法
        boolean b = linkedList.offerFirst("11111");//在此列表的前面插入指定的元素。
        boolean z = linkedList.offerLast("z");//在该列表的末尾插入指定的元素。
        String poll = linkedList.poll();//检索并删除此列表的头（第一个元素）。
        String s3 = linkedList.pollFirst();//检索并删除此列表的第一个元素，如果此列表为空，则返回 null 。
        String s4 = linkedList.pollLast();//检索并删除此列表的最后一个元素，如果此列表为空，则返回 null 。
        String pop = linkedList.pop();//从此列表表示的堆栈中弹出一个元素。换句话说，删除并返回此列表的第一个元素,此方法相当于removeFirst() 。
        String remove = linkedList.remove();//检索并删除此列表的头（第一个元素）。
        String s5 = linkedList.removeFirst();//从此列表中删除并返回第一个元素。
        String s6 = linkedList.removeLast();//从此列表中删除并返回最后一个元素。
        boolean b1 = linkedList.removeFirstOccurrence("1");//删除此列表中指定元素的第一个出现（从头到尾遍历列表时）。
        boolean s7 = linkedList.removeLastOccurrence("s");//删除此列表中指定元素的最后一次出现（从头到尾遍历列表时

        linkedList.forEach(System.out::println);


    }
}
